package com.csun.dsms.service;

import com.csun.dsms.comment.core.support.IService;
import com.csun.dsms.model.domain.DsmsStaff;
import com.csun.dsms.model.domain.DsmsUser;
import com.csun.dsms.model.dto.staff.StaffDto;
import com.csun.dsms.model.dto.staff.StaffQueryDto;
import com.csun.dsms.model.vo.staff.ApplyStaffDto;
import com.csun.dsms.model.vo.staff.StaffNumberVo;
import com.csun.dsms.model.vo.staff.StaffVo;

import java.util.List;
import java.util.Map;

/**
 * @author chisj chisj@foxmail.com
 * @version 1.0.0
 * @date 2021-09-22 16:55
 * @description: TODO
 */
public interface DsmsStaffService extends IService<DsmsStaff> {

    /**
     * 查询服务人员列表.
     *
     * @param staffQueryDto the user query dto
     *
     * @return the staff vo list.
     */
    List<StaffVo> queryListWithPage(StaffQueryDto staffQueryDto);

    /**
     * 新增服务人员
     *
     * @param staffDto the staff dto
     *
     * @return the int.
     */
    Integer save(StaffDto staffDto, DsmsUser login);

    /**
     * 修改服务人员
     *
     * @param login     the login user
     * @param staffDto   the staff dto
     *
     * @return  the int.
     */
    Integer edit(StaffDto staffDto, DsmsUser login);

    /**
     * 通过Id删除服务人员.
     *
     * @param staffId the staff id
     *
     * @return the int.
     */
    Integer deleteById(Long staffId);

    /**
     * 通过Id查询服务人员.
     *
     * @param staffId the staff id
     *
     * @return the int
     */
    StaffVo showById(Long staffId);

    /**
     * 审核服务人员.
     *
     * @param applyStaffDto  the apply staff dto
     *
     * @return the int.
     */
    Integer apply(ApplyStaffDto applyStaffDto, DsmsUser login);

    /**
     * 根据用户id获取服务人员信息
     *
     * @param userId    the user id
     *
     * @return  the staff vo
     */
    StaffVo selectByUserId(Long userId);

    /**
     * 获取每年每个月的服务人员数量
     *
     * @param year  the year-yyyy
     *
     * @return  the staff number vo list.
     */
    List<StaffNumberVo> queryStaffNumberList(String year);
    /*
     * 查询该公司下是否有在职服务人员
     * */
    List<StaffVo> queryStaffVo(StaffQueryDto staffQueryDto);

    List<Map<String,Integer>>  queryStaffNumberByMonth(String year);
    //查询当前服务人员所在片区
    DsmsStaff selectAreaByStaff(DsmsStaff dsmsStaff);
    //查询当前片区服务人员
    List<DsmsStaff> selectStaffByArea(DsmsStaff ds);
}
